package com.animerank.utils;

/**
 * 用户上下文持有器
 * 用于在ThreadLocal中存储和获取当前登录用户的ID
 */
public class UserContextHolder {

    // 使用ThreadLocal存储当前线程的用户ID
    private static final ThreadLocal<Long> USER_ID_HOLDER = new ThreadLocal<>();

    /**
     * 设置当前线程的用户ID
     * @param userId 用户ID
     */
    public static void setUserId(String userId) {
        USER_ID_HOLDER.set(Long.valueOf(userId));
    }

    /**
     * 获取当前线程的用户ID
     * @return 用户ID，如果不存在则返回null
     */
    public static Long getUserId() {
        return USER_ID_HOLDER.get();
    }

    /**
     * 清除当前线程的用户ID
     * 防止ThreadLocal内存泄漏
     */
    public static void clear() {
        USER_ID_HOLDER.remove();
    }
}